package com.gyt.manager.common.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author gyt
 */
public class RegUtil {

    private static final Pattern NUMBER_PART = Pattern.compile("-?[0-9]+");
    private static final Pattern ALL_EN = Pattern.compile("[^a-zA-Z]");
    private static final Pattern ALL_CN = Pattern.compile("[u4e00-u9fa5]");
    private static final Pattern LOWER_FIRST_EN = Pattern.compile("^[a-z][a-zA-Z]*$");
    private static final Pattern CAPITAL_FIRST_EN = Pattern.compile("^[A-Z][a-zA-Z]*$");
    private static final Pattern NUMERIC_UNDERLINE_EN = Pattern.compile("^[a-zA-Z][a-zA-Z0-9_]*$");

    /**
     * 用正则表达式判断字符串是否为数字（含负数）
     *
     * @param str
     * @return
     */
    public static boolean isNumeric(String str) {
        Matcher mat = NUMBER_PART.matcher(str);
        if (mat.matches()) {
            return true;
        }
        return false;
    }

    /**
     * 检查一个字符串是否是纯英文，是为true
     *
     * @param var
     * @return
     */
    public static boolean checkVarEn(String var) {
        return !ALL_EN.matcher(var).find();
    }

    /**
     * 检查一个字符串是否是纯中文，是为true
     *
     * @param var
     * @return
     */
    public static boolean checkVarCn(String var) {
        return !ALL_CN.matcher(var).find();
    }

    /**
     * 检查一个字符串是否是纯英文且以大写开头，是为true
     *
     * @param var
     * @return
     */
    public static boolean checkVarUpperEn(String var) {

        return CAPITAL_FIRST_EN.matcher(var).find();
    }


    /**
     * 检查一个字符串是否是纯英文且以小写开头，是为true
     *
     * @param var
     * @return
     */
    public static boolean checkVarLowerEn(String var) {
        return LOWER_FIRST_EN.matcher(var).find();
    }

    /**
     * 判断字符串是否以英文字母开头，且只含英文、数字、下划线；是返回true
     *
     * @param var
     * @return
     */
    public static boolean checkPureEn(String var) {
        return NUMERIC_UNDERLINE_EN.matcher(var).find();
    }
}
